/**
 * Created by apple on 2017/6/10.
 */
//管理员管理权限
var express = require('express');
var router = express.Router();

var PriRouter = module.exports;
var AdminToken = require('../db/user_tokens.js');
var AppMngPri = require('../dao/app_mng_pri.js');


/**
 * 系统管理员、产品管理员添加产品管理权限
 * @param  token 管理员
 *         url/admin_privilege/addPri
 */
PriRouter.addPri = function(req, res) {
    var par = paramAll(req);

    router.checkParAndAdm(par,false,function (err,errCode,agentInfo) {

        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        AppMngPri.addPri(agentInfo,function (err) {
            if(err){
                console.log(err);
                res.json(new ERR(err, 400));
                return;
            }

            res.json(new PKG(agentInfo));

        });
    });

}
router.post('/addPri', PriRouter.addPri);




/**
 * 系统管理员、产品管理员修改代理
 * @param  token 管理员
 *         url/admin_privilege/updatePri
 */
PriRouter.updatePri = function(req, res) {
    var par = paramAll(req);

    router.checkParAndAdm(par,true,function (err,errCode,agentInfo) {

        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        AppMngPri.updatePri(agentInfo,function (err,result) {
            if(err){
                console.log(err);
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));

        });
    });

}
router.post('/updatePri', PriRouter.updatePri);



/**
 * 系统管理员、产品管理员查询管理权限列表
 * @param  token 管理员
 *         url/agent/agentList
 */
PriRouter.priList = function(req, res) {
    var par = paramAll(req);

    if(!par.token){
        res.json(new ERR('token不为空', 400));
        return;
    }

    if(!par.app_sid){
        res.json(new ERR('app_sid不为空', 400));
        return;
    }

    if(par.status){
        if(par.status != 0 && par.status != 1){
            res.json(new ERR('status有误', 400));
            return;
        }
    }


    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err, errCode,adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        AppMngPri.priList(par,function (err,result) {
            if(err){
                res.json(new ERR(err, 400));
                return;
            }
            var list = {
                priList: result
            };
            res.json(new PKG(list));
        });

    });

}
router.post('/priList', PriRouter.priList);



/**
 * 抽取  添加、修改管理权限校验请求的参数以及管理员权限
 * par 请求的参数
 * isUpdate  ture 更新数据      false 修改数据
 * cb 返回
 */
router.checkParAndAdm = function (par,isUpdate,cb) {


    if(!par.token){
        cb('token不为空',400);
        return;
    }

    if(!par.app_sid){
        cb('app_sid不为空',400);
        return;
    }

    if(!par.sid || par.sid == 'admin' || par.sid == 'adm'){
        cb('sid有误',400);
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.sid, function (err, errCode,adminInfo) {
        if (err) {
            cb(err,errCode);
            return;
        }

        var priInfo = {
            app_sid: par.app_sid,
            sid: par.sid
        };
        var parCount = 0;

        if (par.name) {
            priInfo.name = par.name;
            parCount++;
        }
        if (par.comment) {
            priInfo.comment = par.comment;
            parCount++;
        }
        if (par.status) {
            if(par.status != 1 && par.status != 0){
                cb('status参数有误',400);
                return;
            }
            priInfo.status = par.status;
            parCount++;
        }

        //如果是修改vip，一定要带上修改的字段
        if (isUpdate == true && parCount == 0) {
            cb('无效参数', 400);
            return;
        }

        if (isUpdate == true){
            priInfo.account = adminInfo.account;
            priInfo.adm_uid = adminInfo.uid;
        }

        cb(null,0,priInfo);

    });

}


module.exports = router;